class A():
    pass
class func():
    pass

a = A()

print(A.__call__())
print(func.__call__())
# print(a.__call__)

# class AddXing(object):
#     def __init__(self, f):
#         self.f = f
#     def __call__(self, *args, **kwargs):
#         print("-----------")
#         res = self.f()
#         return res

class Sunck(object):
    def __init__(self, count):
        self.count = count
    def __call__(self, f):
        def inner(*args, **kwargs):
            for i in range(self.count):
                f(*args, **kwargs)
        return inner

# @AddXing
@Sunck(5)
def f():
    print("sunck is a good man")
'''
@Sunck(5)
obj = Sunck(5)
@obj
inner = obj(f) === obj.__call__(f)
f = inner

'''


'''
obj = AddXing(f)
f = obj()
f() ==== obj() === obj.__call__()
'''
f()